
import java.util.Scanner;

/*
    自定义数组扩容规则，当已存储元素数量达到总容量的 80%时，扩容 1.5 倍。
    例如，总容量是 10，当输入第 8 个元素时，数组进行扩容，容量从 10 变 15。
 */
public class Expansion {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        //初始化数据
        int cnt = 1;
        int num = 0;
        //输入初始长度
        System.out.println("请输入初始长度：");
        int length = sc.nextInt();
        int[] arr = new int[length];
        for(int i=0; i<length; i++){
            //记录长度+1
            cnt += 1;
            //开始输入数字
            System.out.println("请输入数字（0为退出）:");
            num = sc.nextInt();
            //如果此时输入为0，跳出循环
            if(num == 0){
                break;
            }
            //数组赋值
            arr[i] = num;
            //判断长度是否为80%，如果是定义新数组并拷贝，最后赋值
            if(cnt > length * 0.8){
                length = length + (length >> 1);
                int [] brr = new int[length];
                System.arraycopy(arr,0,brr,0,cnt);
                arr = brr;
            }
        }
        //打印数组
        System.out.println("数组最终结果为：");
        for (int i=0; i<length; i++){
            System.out.print(arr[i] + " ");
        }
    }
}
